有了決心之後,我們就來看如何養成自己各方面能力成為前端工程師。
首先要記住: 任何功夫,十年磨一劍。非一朝一夕可得。
20年前,在我中二的年紀,第一次買到超級昂貴的個人電腦PC(差不多快五萬),使用作業系統Windows 95,一拿到手就開始安裝遊戲: VR快打、極速快感、紅色警戒等。立即被炫麗奪目的遊戲畫面(當時真的是覺得畫面很棒,現在看是慘不忍睹)所吸引,覺得太酷了,因而立志要做遊戲,在當時幼小的心靈中,深深埋下了愛看美圖的種子。
大一時選擇念資工才真正知道,原來寫程式不只是可以做遊戲,還可以改變世界,讓同學有求於你。出程式公版幫女同學寫作業,練究快速寫code的能力。因此,要練就前端工程師的第一步,就要懂得無酬無私的分享,解決需求端的任何問題。
為了想學做遊戲,買書自學當時大量遊戲採用的微軟繪圖SDK-DirectX(後來整合至XNA),涉獵極少部分遊戲採用的OpenGL;不只是程式,做遊戲還需要美術和企劃,這兩邊的東西也要去涉獵。
於是開始大量碰觸關於Photoshop, Illustrator, 3D Max, Maya, flash, Movie Maker, PowerDirector, GameMaker等一切有關遊戲需要用到的軟體,都要去碰。
像接網頁的案子練習美工設計,順便賺點外快,還有flash製作的案子,也都是為了培養美學。
然後參加比賽寫遊戲企劃案,寫文章寫故事,參訪遊戲公司,都是為了做出更好的遊戲。
我不是真的喜歡寫程式、或者做美工、寫文案等,而是有個大目標說,「喔,我就是要做遊戲。」所以我應該學些什麼東西,慢慢走向我的目標。
雖然出社會後,我完全沒做過有關遊戲相關的工作(還好沒選擇,不然餓死),但完全不代表這是一條白走的路,我之後會再說明。
結果現在老來俏,反倒是一堆遊戲公司(博弈)跟我說要來找前端。原來前端的價值在博弈XD。
出社會第一份工作是影音撥放軟體的介面工程師,改改C++的code,但都只遊走於表層,做點touch screen gesture的互動設計。
第二份工作也是做一個standalone的notebook原廠備份軟體,要自己設計界面,與互動流程,當然也還是要寫c++的code。
第三份工作開始走向Web。雖然之前就接過網頁的案子,但因為久沒碰Web了,竟不知道這幾年演進這麼大,那剛好是JQuery/Bootstrap盛行的晚期,AngularJS與NodeJS剛起來的年代;除了做網站,也寫android app,做一些Location Awareness的互動設計。
後來2014年到D社繼續碰Web,並持續擴大碰觸到Cloud Service,玩AWS, Lambda微運算, Restful API, Nginx, CentOS, MongoDB等後端的東西。雖然看似跟前端沒甚麼關係,但當時因為從無到有參與一個大案子,包含PM/SA一開始要寫的規格文件,系統分析文件,User Story,Wireframe都要參與設計。
有些人說設計需要天份,工匠與藝術家的差距,可能就在那一點點的天份;但是,大部分人都忘了,他們都是有99%的努力與持續練習。
也是在D社開始接觸到敏捷軟體開發的概念,開始嘗試run自以為的Scrum。當時看敏捷的輪廓還不是很清楚,甚至以為導入敏捷就可以加快開發速度,結果與在北京和印度的Engineers遠距溝通,還是花了很長的時間。同年亦考取PMP增進溝通技巧。
直到2016年底去一趟上海,受訓CSM,在Daniel Teng的洗禮下,開啟變革的旅程。
「所有你所經歷的,都將有意義的,成就現在的你。」
前端工程師所有需要的硬性軟性技能,皆已到位。
從最接近PM的系統規劃、系統分析,到美術設計人員所需要的美感、互動設計、繪製工具,再到前端、後端的相關技術的整合,大量的跨部門溝通技巧學習,最後是敏捷開發的軟體流程全面思考,都在這一路上的工作經歷獲取到了。
原來已有命定的位置在那等著我,生命路上所接觸看似無意義、無關連的一切,都是為了推進這個位置更近一點。
這過程看似苦多於樂,也不是都順遂,而是真真實實的切膚之痛。如果發現你的過程不是承擔這些,那代表你未來的走向可能是另外一個位置。
你相信一件事多少,只能由你願意為之冒險的事物顯現出來。
要獲得必有犧牲。因此這堂課就像之前所說的,我不是要教你什麼,而是要協助發掘你身上特有適合自己的位置。且每個人都不一樣。